In a typical video processing scenario, a video is first encoded to reduce consumption of bandwidth during transfer of the video. The encoded video is then streamed and decoded at client end to display the video. Over a period of time, use of 360-degree video has increased and hence, a need for efficient video encoding method has also cropped up. Several methods exist to encode 360-degree video. However, these methods suffer from one or more drawbacks as discussed below.
One existing method includes capturing the 360-degree video and encoding the video using any existing two-dimensional (2D) video encoding methods. However, such method treats all viewing angles equally and results in wastage of resources. For example, bitrate is wasted on scenes that are out of field of view while scene that is in field of view does not have desired quality.
Another existing method includes view optimization encoding method. Human eyes and the viewing devices usually have limited field of view that is much smaller than the 360-degree that the 360-degree video provides. In general, view optimization methods try to encode less information outside the field of view and encode more information within the field of view. Particularly, a pyramid mapping based view optimization method exists. In this method, a view is a selected viewing angle in the 360-degree video. For each selected view, a view port is created from the input 360-degree video using a sphere-to-pyramid geometry mapping. The created view port video has full spherical coverage and full frame rate but only the front view of each view port has full resolution while the side views and the rear view have reduced resolution. In this way, only the video content inside the front view is to be presented with high video quality while the rest of the video content will be presented with lower video quality. The created view port videos are then encoded using traditional video encoding method. A major drawback of the method is that many view ports are needed to produce smooth view switching and this results in redundancy among view ports as each view port is independent from each other. In addition, this also adds to large amount of storage. Further, large number of view ports with large sizes results in increasing view switching latency and in preventing pre-buffering in video streaming due to view change.
Therefore, there is a need for a method and a system for performing a layer based view optimization encoding of 360-degree video for consumption by a virtual reality (VR) device in an efficient manner.